home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / answrbok / 7_10.lha / 7_10 / stackdir.h < prev    next >
C/C++ Source or Header  |  1993-08-08  |  998b  |  43 lines

  1. * Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */
  2. * The C++ Answer Book */
  3. * Tony Hansen */
  4. * All rights reserved. */
  5. ifndef STACKDIR_H
  6. define STACKDIR_H
  7. lass stackdir
  8.  
  9.    int dir;
  10.  
  11. ublic:
  12.    stackdir();
  13.  
  14.    // Return a pointer to a local variable
  15.    // beyond the current stack frame.
  16.    char *plusone();
  17.    char *plustwo();
  18.  
  19.    // T if the stack grows up
  20.    int grows_up()
  21.    { return dir; }
  22.  
  23.    // Subtract two pointers as if the stack grew up.
  24.    //        a-b = >0 if a>b
  25.    //          0  if a==b
  26.    //          <0 if a<b
  27.    int diff(void *a, void *b)
  28.    {
  29. return grows_up() ?
  30.        ((char*)a - (char*)b):
  31.        ((char*)b - (char*)a);
  32.    }
  33.  
  34.    // Compare two pointers as if the stack grew up.
  35.    int less(void *a, void *b) { return diff(a,b) < 0; }
  36.    int lesseq(void *a, void *b) { return diff(a,b) <= 0; }
  37.    int greater(void *a, void *b) { return diff(a,b) > 0; }
  38.    int greatereq(void *a, void *b) { return diff(a,b) >= 0; }
  39. ;
  40.  
  41. xtern stackdir Stackdir;
  42. endif /* STACKDIR_H */
  43.